#define  _CRT_SECURE_NO_WARNINGS

//借助第三个变量，实现两个数的交换

#include<stdio.h>
int main()
{
	int a, b, temp;
	printf("输入两个数字");
	scanf("%d %d", &a, &b);
	printf("交换前：a=%d , b=%d\n", a, b);
	temp = a;
	a = b;
	b = temp;
	printf("交换后：a=%d , b=%d\n", a, b);
	return 0;
}

//或者
//两个数之间进行加减运算，实现两个数的交换
#include<stdio.h>
int main()
{
	int a, b;
	printf("输入两个数字");
	scanf("%d %d", &a, &b);
	printf("交换前：a=%d , b=%d\n", a, b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("交换后：a=%d , b=%d\n", a, b);
	return 0;
}

//或者
//将两个数进行异或运算，最终实现两个数的交换
// （这是在二进制运算的基础上进行的）

#include<stdio.h>
int main()
{
	int a, b, temp;
	scanf("%d %d", &a, &b);
	printf("交换前：a=%d , b=%d\n", a, b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("交换后：a=%d , b=%d\n", a, b);
	return 0;
}

//或者
//对这两个数进行位运算，以实现两个数的交换
//（也是基于二进制运算的基础，但是不适用于太大的数字）

#include<stdio.h>
int main()
{
	int a, b, temp;
	scanf("%d %d", &a, &b);
	printf("交换前：a=%d , b=%d\n", a, b);
	a = a << 8;
	a = a + b;
	b = a >> 8;
	a = a & 0xff;
	printf("交换后：a=%d , b=%d\n", a, b);
	return 0;
}